package com.yanfan.access.domain;

import java.util.Date;

import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yanfan.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 门禁设备信息对象 nj_access_device_info
 *
 * @author genluo
 * @date 2024-10-29
 */

@Data
public class NjAccessDeviceInfo implements Serializable{

private static final long serialVersionUID=1L;

    /**
     * 设备名称
     */
    @Excel(name = "设备名称")
    @NotBlank(message = "设备名称不能为空")
    private String deviceName;

    /**
     * 设备编码
     */
    @Excel(name = "设备编码")
    @TableId(value = "device_code" , type = IdType.ASSIGN_ID) // 字符串类型使用雪花算法
    private String deviceCode;

    @TableField(exist = false)
    private JSONObject devExt;

    @TableField(exist = false)
    private Object[] units;

    /**
     * 设备序列号
     */
    @Excel(name = "设备序列号")
    private String deviceSn;

    /**
     * 设备 MAC 地址
     */
    @Excel(name = "设备 MAC 地址")
    private String deviceMac;

    /**
     * 设备类别
     */
    @Excel(name = "设备类别")
    private Long deviceCategory;

    /**
     * 设备类型
     */
    @Excel(name = "设备类型")
    private Long deviceType;

    /**
     * 设备制造商
     */
    @Excel(name = "设备制造商")
    private String deviceManufacturer;

    /**
     * 设备型号
     */
    @Excel(name = "设备型号")
    private String deviceModel;

    /**
     * 设备 IP 地址
     */
    @Excel(name = "设备 IP 地址")
    private String deviceIp;

    /**
     * 设备端口号
     */
    @Excel(name = "设备端口号")
    private Long devicePort;

    /**
     * 所有者编码
     */
    @Excel(name = "所有者编码")
    private String ownerCode;

    /**
     * 组织名称
     */
    @Excel(name = "组织名称")
    private String orgName;

    /**
     * 登录类型
     */
    @Excel(name = "登录类型")
    private String loginType;

    /**
     * 登录用户名
     */
    @Excel(name = "登录用户名")
    private String loginName;

    /**
     * 登录密码
     */
    @Excel(name = "登录密码")
    private String loginPassword;

    /**
     * 密码是否已更改
     */
    @Excel(name = "密码是否已更改")
    private Long isPwdChange;

    /**
     * 代理服务器编码
     */
    @Excel(name = "代理服务器编码")
    private String mcdProxyServerCode;

    /**
     * 设备是否在线
     */
    @Excel(name = "设备是否在线")
    private Long isOnline;

    /**
     * 在线更新时间
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "在线更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date onlineUpdateTime;

    /**
     * 在线更新版本
     */
    @Excel(name = "在线更新版本")
    private Long onlineUpdateVersion;

    /**
     * 离线原因
     */
    @Excel(name = "离线原因")
    private String offlineReason;

    /**
     * 是否虚拟设备
     */
    @Excel(name = "是否虚拟设备")
    private Long isVirtual;

    /**
     * 设备能力
     */
    @Excel(name = "设备能力")
    private String capability;

    /**
     * 子系统名称
     */
    @Excel(name = "子系统名称")
    private String subSystem;

    /**
     * 更新时间（时间戳）
     */
    @Excel(name = "更新时间（时间戳）")
    private Long updateTime;

    /**
     * 创建时间（时间戳）
     */
    @Excel(name = "创建时间（时间戳）")
    private Long createTime;

    /**
     * 树排序值
     */
    @Excel(name = "树排序值")
    private Long treeSort;

    /**
     * 记录更新时间（时间戳）
     */
    @Excel(name = "记录更新时间（时间戳）")
    private Long recordUpdateTime;


}
